// package com.ysc.task.filter;
//
// import com.ysc.task.constant.YSConstant;
// import com.ysc.task.exception.YscException;
// import com.ysc.task.util.JwtTool;
// import org.springframework.http.HttpHeaders;
// import org.springframework.http.server.ServletServerHttpRequest;
// import org.springframework.http.server.reactive.ServerHttpRequest;
// import org.springframework.stereotype.Component;
// import org.springframework.util.CollectionUtils;
// import org.springframework.util.StringUtils;
// import org.springframework.web.filter.OncePerRequestFilter;
//
// import javax.servlet.FilterChain;
// import javax.servlet.ServletException;
// import javax.servlet.http.HttpServletRequest;
// import javax.servlet.http.HttpServletResponse;
// import java.io.IOException;
// import java.util.Enumeration;
// import java.util.List;
//
// /**
//  * Version: 1.0
//  * Class Name: CorsResponseHeaderFilter
//  * Description: 请求过滤器
//  * Author: ysc
//  * Date: 2024/3/31 12:41
//  */
// @Component
// public class JwtTokenFilter extends OncePerRequestFilter {
//
//     @Override
//     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
//
//         HttpHeaders httpHeaders = new ServletServerHttpRequest(request).getHeaders();
//         String requestUrl = request.getRequestURI();
//         if ( requestUrl.contains("login") || requestUrl.contains("register") ) {
//             filterChain.doFilter(request, response);
//             return;
//         }
//         Enumeration<String> authorization = request.getHeaders("Authorization");
//         Enumeration<String> authorization1 = request.getHeaders("authorization");
//         String token = httpHeaders.getFirst("Authorization");
//         if ( !StringUtils.hasText(token) ) {
//             throw new YscException(YSConstant.HAS_NOT_LOGIN);
//         }
//
//         Long userId = null;
//         try {
//             userId = Long.valueOf(JwtTool.parseJWT(token).getSubject());
//         } catch (Exception e) {
//             e.printStackTrace();
//         }
//
//         if ( userId == null ) {
//             throw new YscException(YSConstant.HAS_NOT_LOGIN);
//         }
//         filterChain.doFilter(request, response);
//     }
// }
